最近用Linux开发,经常需要切换不同的项目代码,厌倦了各种目录切换的操作,换成自定义函数的方式进行快速切换。

设计思路

  • 实现一个自定义函数,能接收项目名称,跳转到对应代码目录
  • 由于git项目名称可能很长,需要对部分项目创建别名,能够转换到对应的项目名称再跳转
  • 如果项目不存在,跳转到默认目录
  • 准备编程

  • bash的自定义函数格式
  • to(){  
        project=$1 //获取第一个参数
    }
    //所以,最终命令的用法应该类似这种方式:to projectA 即可跳转到对应项目目录
    
  • 项目名称映射 bash语法中的map定义格式为:declare -A map=(["akey"="avalue"])
    注意中间不要有空格
  • 目录跳转 自定义的方法中执行目录切换并不会改变当前用户的真实目录,除非放到bash_rc等自动加载的空间中。
  • 代码实现

    #快速跳转
    to(){  
        declare -A map=(["user"]="new-user" ["enterprise"]="my-enterprise" ["common"]="all-common" ["crm"]="new-crm")
        home="/home/dev/git/" //设定默认目录,如果项目不存在跳转到此
        path=$home
        project=$1
        projectPath=${map[$project]} //从输入项中获取对应map中是否存在别名需要转换
        echo $projectPath
        if [ $projectPath ]
        then
            path=${home}${projectPath} //有别名则用别名目录拼接并跳转
        else
            path=${home}${project} //没有别名,则直接用输入名称跳转
        fi
    
        if [ ! -d $path ]
        then
            echo "dir doesn't exist,to default now!"
            cd $home
        else
            cd $path
        fi
    }